package com.zhuzi.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.Data;

/**
 * @author MI
 * @ClassName GatherInfo.java
 * @createTime 2021年11月15日 17:09:00
 * 81报文
 */
@Data
@JsonPropertyOrder(value = {"I_E_FLAG", "AREA_ID", "CHNL_NO", "GETHER_MODE", "SESSION_ID", "IC_INFO", "FORM_INFO", "DR_CUSTOMS_NO", "VE_CUSTOMS_NO", "VE_LICENSE_NO", "CONTA_ID", "ESEAL_ID", "GROSS_WT", "VE_RFID", "DR_RFID", "PHOTO", "OPERATOR_ID", "OPERATE_TIME", "EXTEND", "CONTA_RECOGNITION", "VE_LICENSE_RECOGNITION"})
@JacksonXmlRootElement(localName = "GATHER_INFO")
public class GatherInfo {
    @JsonProperty("I_E_FLAG")
    private String iEFlag;

    @JacksonXmlProperty(localName = "AREA_ID")
    private String areaId;

    @JacksonXmlProperty(localName = "CHNL_NO")
    private String chnlNo;

    @JacksonXmlProperty(localName = "GETHER_MODE")
    private String getherMode;

    @JacksonXmlProperty(localName = "SESSION_ID")
    private String sessionId;

    @JacksonXmlProperty(localName = "IC_INFO")
    private IcInfo IC_INFO = new IcInfo();

    @JacksonXmlProperty(localName = "FORM_INFO")
    private FormInfo FORM_INFO = new FormInfo();

    @JacksonXmlProperty(localName = "DR_CUSTOMS_NO")
    private String DR_CUSTOMS_NO;

    @JacksonXmlProperty(localName = "VE_CUSTOMS_NO")
    private String VE_CUSTOMS_NO;
    /**
     * 车牌号
     */
    @JacksonXmlProperty(localName = "VE_LICENSE_NO")
    private String veLicenseNo;

    @JacksonXmlProperty(localName = "CONTA_ID")
    private String CONTA_ID;

    @JacksonXmlProperty(localName = "ESEAL_ID")
    private String ESEAL_ID;
    /**
     * 车重
     */
    @JacksonXmlProperty(localName = "GROSS_WT")
    private String grossWt;

    @JacksonXmlProperty(localName = "VE_RFID")
    private VeRfid veRfid = new VeRfid();

    @JacksonXmlProperty(localName = "DR_RFID")
    private DR_RFID DR_RFID = new DR_RFID();

    @JacksonXmlProperty(localName = "PHOTO")
    private PHOTO PHOTO = new PHOTO();

    @JacksonXmlProperty(localName = "OPERATOR_ID")
    private String OPERATOR_ID;

    @JacksonXmlProperty(localName = "OPERATE_TIME")
    private String OPERATE_TIME;
    /**
     * 2018/11/23 10:04:26
     */

    @JacksonXmlProperty(localName = "EXTEND")
    private EXTEND EXTEND = new EXTEND();
    /**
     * <pre>
     * contaRecognition
     * </pre>
     */
    @JacksonXmlProperty(localName = "CONTA_RECOGNITION")
    private CONTA_RECOGNITION CONTA_RECOGNITION = new CONTA_RECOGNITION();

    @JacksonXmlProperty(localName = "VE_LICENSE_RECOGNITION")
    private VE_LICENSE_RECOGNITION VE_LICENSE_RECOGNITION = new VE_LICENSE_RECOGNITION();

    @Data
    @JacksonXmlRootElement(localName = "PHOTO")
    public static class PHOTO {
        @JacksonXmlProperty(localName = "PHOTO_GUID")
        private String PHOTO_GUID;
        @JacksonXmlProperty(localName = "PHOTO_PERSPECTIVE")
        private String PHOTO_PERSPECTIVE;
    }


    @Data
    @JacksonXmlRootElement(localName = "IC_INFO")
    public static class IcInfo {
        @JacksonXmlProperty(localName = "IC_ID")
        private String icId;
        @JacksonXmlProperty(localName = "IC_NO")
        private String icNo;
        @JacksonXmlProperty(localName = "IC_TYPE")
        private String icType;
        @JacksonXmlProperty(localName = "IC_EXTENDED_CONTENT")
        private String icExtendedContent;
    }

    @Data
    @JacksonXmlRootElement(localName = "FORM_INFO")
    public static class FormInfo {
        @JacksonXmlProperty(localName = "FORM_TYPE")
        private String FORM_TYPE;
        @JacksonXmlProperty(localName = "FORM_ID")
        private String FORM_ID;
    }

    @Data
    @JacksonXmlRootElement(localName = "VE_RFID")
    public static class VeRfid {
        @JacksonXmlProperty(localName = "RFID_ID")
        private String RFID_ID;

        @JacksonXmlProperty(localName = "VE_LICENSE_NO")
        private String VE_LICENSE_NO;

        @JacksonXmlProperty(localName = "VE_CUSTOMS_NO")
        private String VE_CUSTOMS_NO;

        @JacksonXmlProperty(localName = "VE_WT")
        private String VE_WT;

        @JacksonXmlProperty(localName = "VE_COMPANY")
        private String VE_COMPANY;

        @JacksonXmlProperty(localName = "VE_PERFORMANCE")
        private String VE_PERFORMANCE;
    }

    @Data
    @JacksonXmlRootElement(localName = "DR_RFID")
    public static class DR_RFID {
        @JacksonXmlProperty(localName = "RFID_ID")
        private String RFID_ID;
        @JacksonXmlProperty(localName = "DR_NAME")
        private String DR_NAME;

        @JacksonXmlProperty(localName = "DR_CUSTOMS_NO")
        private String DR_CUSTOMS_NO;

        @JacksonXmlProperty(localName = "DR_COMPANY")
        private String DR_COMPANY;

        @JacksonXmlProperty(localName = "DR_PERFORMANCE")
        private String DR_PERFORMANCE;
    }

    @Data
    @JacksonXmlRootElement(localName = "EXTEND")
    public static class EXTEND {
        @JacksonXmlProperty(localName = "NAME")
        private String NAME;

        @JacksonXmlProperty(localName = "VALUE")
        private String VALUE;
    }

    @Data
    @JacksonXmlRootElement(localName = "CONTA_RECOGNITION")
    public static class CONTA_RECOGNITION {
        @JacksonXmlProperty(localName = "CONTA_ID")
        private String CONTA_ID;

        @JacksonXmlProperty(localName = "CONTA_TYPE")
        private String CONTA_TYPE;

        @JacksonXmlProperty(localName = "CONTA_LOCK")
        private String CONTA_LOCK;

        @JacksonXmlProperty(localName = "CONFIDENCE_RATIO")
        private String CONFIDENCE_RATIO;
    }

    @Data
    @JacksonXmlRootElement(localName = "VE_LICENSE_RECOGNITION")
    public static class VE_LICENSE_RECOGNITION {
        @JacksonXmlProperty(localName = "DOMESTIC_LICENSE_NO")
        private String DOMESTIC_LICENSE_NO;

        @JacksonXmlProperty(localName = "DOMESTIC_LICENSE_COLOR")
        private String DOMESTIC_LICENSE_COLOR;

        @JacksonXmlProperty(localName = "FOREIGN_LICENSE_COLOR")
        private String FOREIGN_LICENSE_COLOR;

        @JacksonXmlProperty(localName = "CONFIDENCE_RATIO")
        private String CONFIDENCE_RATIO;
    }
}
